FLEX布局

Flexbox是一种现代的CSS布局模式,它可以使我们更轻松地布局和对齐内容。Flexbox通过使用容器和其内部的项目之间的关系来管理布局。在本教程中,我们将介绍Flexbox的基本概念以及如何使用它来布局Web页面的内容。关于FLEX布局详细的图文讲解,可以查看阮一峰老师的文档:直达链接

一、Flex容器

Flex容器是一个父元素,它包含了一组Flex项目。我们使用CSS的display属性来将一个元素设置为Flex容器。

例如,我们可以将一个div元素设置为Flex容器:

.container {
  display: flex;
}

默认情况下,Flex容器是沿主轴方向排列项目的。主轴是Flex容器的横向轴或纵向轴,具体取决于Flex容器的排列方向。我们可以使用flex-direction属性来指定Flex容器的主轴方向。例如,我们可以将Flex容器的主轴方向设置为从上到下(即纵向排列):

.container {
  display: flex;
  flex-direction: column;
}

Flex容器有以下几个属性:

  • justify-content:控制Flex项目在主轴方向上的对齐方式。它接受以下值:flex-start、flex-end、center、space-between、space-around和space-evenly。默认值为flex-start。
  • align-items:控制Flex项目在交叉轴方向上的对齐方式。它接受以下值:flex-start、flex-end、center、baseline和stretch。默认值为stretch。
  • align-content:控制多行Flex项目在交叉轴方向上的对齐方式。它接受以下值:flex-start、flex-end、center、space-between、space-around和stretch。默认值为stretch。

例如,我们可以将Flex项目在主轴方向上居中对齐,并在交叉轴方向上拉伸:

.container {
  display: flex;
  justify-content: center;
  align-items: stretch;
}

二、Flex项目

Flex项目是Flex容器内的子元素。我们可以使用CSS的flex属性来指定Flex项目的属性。Flex项目有以下几个属性:

  • flex-grow:控制Flex项目在主轴方向上的增长能力。它接受一个数字作为值,该数字表示Flex项目在可用空间中所占比例。默认值为0,表示Flex项目不会增长。
  • flex-shrink:控制Flex项目在主轴方向上的收缩能力。它接受一个数字作为值,该数字表示Flex项目在空间不足时所占比例。默认值为1,表示Flex项目会缩小。
  • flex-basis:定义Flex项目在主轴方向上的初始大小。它接受一个长度值作为值,默认值为auto。
  • flex:是flex-grow,flex-shrink和flex-basis的简写属性。它的默认值为0 1 auto。
  • align-self:定义Flex项目在交叉轴方向上的对齐方式。它接受与align-items属性相同的值。默认值为auto。

例如,我们可以将一个Flex项目设置为占用可用空间的一半,并且不会收缩:

.item {
  flex-grow: 1;
  flex-shrink: 0;
  flex-basis: 50%;
}

三、完整示例

下面是一个简单的示例,展示了如何使用Flex容器和Flex项目布局页面:

<div class="container">
  <div class="item">Item 1</div>
  <div class="item">Item 2</div>
  <div class="item">Item 3</div>
</div>
.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

.item {
  flex: 1;
  height: 50%;
  background-color: #ccc;
  border: 1px solid #000;
  text-align: center;
  font-size: 2em;
}

在这个例子中,我们将Flex容器设置为在主轴和交叉轴方向上都居中对齐。我们还将Flex项目设置为占用可用空间的相同比例,并设置了背景色、边框、文本对齐和字体大小。最终的效果是,Flex项目在Flex容器中居中对齐,并占用了Flex容器的一半高度。

Copyright © 高笑石 (2021 - present) all right reserved,powered by Gitbook文件修订时间: 2023-03-31 11:56:44

results matching ""

    No results matching ""